package com.sh.rbac.domain.converter;

import com.sh.rbac.domain.dto.user.UserProfileDTO;
import com.sh.rbac.domain.dto.user.UserSaveDTO;
import com.sh.rbac.domain.dto.user.UserUpdateDTO;
import com.sh.rbac.domain.entity.User;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

/**
 * 用户转换类
 *
 * @author wb
 * @since 2024-07-04
 */

@Mapper
public interface UserConverter {

    UserConverter INSTANCE = Mappers.getMapper(UserConverter.class);

    /**
     * 将 UserSaveDTO 转换为 User
     *
     * @param userSaveDTO 用户保存数据传输对象
     * @return 用户实体类
     */
    User toEntity(UserSaveDTO userSaveDTO);


    /**
     * 将 UserUpdateDTO 转换为 User
     *
     * @param userUpdateDTO 用户修改数据传输对象
     * @return 用户实体类
     */
    User toEntity(UserUpdateDTO userUpdateDTO);


    /**
     * 将 UserProfileDTO 转换为 User
     *
     * @param userProfileDTO 用户个人信息数据传输对象
     * @return 用户实体类
     */
    User toEntity(UserProfileDTO userProfileDTO);

}
